﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using AdministracionCooperativa.entidades;
using AdministracionCooperativa.Controlador;

namespace AdministracionCooperativa.Formularios
{
    public partial class Frmso : Form
    {
        private List<catnom> listsocio = null;
        private int a = -1;
        public Frmso()
        {
            InitializeComponent();
        }
        
        private int LVItemSeleccionado(ListView LView)
        {
            for (int i = 0; i < LView.Items.Count; i++)
            {
                if (LView.Items[i].Selected == true)
                {
                    //MessageBox.Show("seleccionado: "+ Convert.ToString(i));
                    return i;
                }
            }
            return -1;
        }

        private void limpirtb()
        {
            tbcelec.Text = "";
            tbnom.Text = "";
            tbpat.Text = "";
            tbmat.Text = "";
            tbdir.Text = "";
            tbtel.Text = "";
        }
        private int faltadatos()
        {

            if (tbnom.Text == "")
            { tbnom.Focus(); MessageBox.Show("Errores al Capturar: Hace falta NOMBRE"); return 1; }
            else
                if (tbpat.Text == "")
                { tbpat.Focus(); MessageBox.Show("Errores al Capturar: Hace falta APELLIDO PATERNO"); return 1; }
                else
                    if (tbmat.Text == "")
                    { tbmat.Focus(); MessageBox.Show("Errores al Capturar: Hace falta APELLIDO MATERNO"); return 1; }
                    else
                        return 0;
        }
        private void button7_Click(object sender, EventArgs e)
        {
            Application.OpenForms["Frmso"].Close();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            if (tbBpaterno.Text=="")
            {
                MessageBox.Show("El cuadro de busqueda esta vacio");
            }
            else
            {
                limpirtb();
                listsocio = ControladorSocio.AllSociosByApPa(tbBpaterno.Text);
                a = -1;
                lvsocios.Clear();
                lvsocios.Columns.Add("CLAVE ELECTOR", 170);
                lvsocios.Columns.Add("NOMBRE", 170);
                lvsocios.Columns.Add("APELLIDO PATERNO", 170);
                lvsocios.Columns.Add("APELLIDO MATERNO", 170);
                foreach (var item in listsocio)
                {
                    ListViewItem lineav = new ListViewItem(item.CVEELEC);
                    lineav.SubItems.Add(item.NOMBRE);
                    lineav.SubItems.Add(item.PATERNO);
                    lineav.SubItems.Add(item.MATERNO);

                    lvsocios.Items.Add(lineav);
                }   
            }
           
        }

        private void lvsocios_SelectedIndexChanged(object sender, EventArgs e)
        {
            int i = LVItemSeleccionado(lvsocios);
            a = i;
            if (i != -1)
            {
                tbcelec.Text = listsocio[i].CVEELEC;
                tbnom.Text = listsocio[i].NOMBRE;
                tbpat.Text = listsocio[i].PATERNO;
                tbmat.Text = listsocio[i].MATERNO;
                tbdir.Text = listsocio[i].DIRECCION;
                tbtel.Text = listsocio[i].TELEFONO;
            }
        }

        private void button3_Click(object sender, EventArgs e)
        {
            if (faltadatos() == 0 && a != -1)
            {
                listsocio[a].NOMBRE = tbnom.Text;
                listsocio[a].PATERNO = tbpat.Text;
                listsocio[a].MATERNO = tbmat.Text;
                listsocio[a].DIRECCION = tbdir.Text;
                listsocio[a].TELEFONO = tbtel.Text;
                string clelec = ControladorSocio.ModificarSocio(listsocio[a]);
                if (clelec != "")
                {
                    MessageBox.Show("Datos Modificados 'LA CLAVE DE ELECTOR NO SERA MODIFICADA'");
                    listsocio = ControladorSocio.AllSociosByApPa(tbpat.Text);
                    lvsocios.Clear();
                    lvsocios.Columns.Add("CLAVE ELECTOR", 170);
                    lvsocios.Columns.Add("NOMBRE", 170);
                    lvsocios.Columns.Add("APELLIDO PATERNO", 170);
                    lvsocios.Columns.Add("APELLIDO MATERNO", 170);
                    foreach (var item in listsocio)
                    {
                        ListViewItem lineav = new ListViewItem(item.CVEELEC);
                        lineav.SubItems.Add(item.NOMBRE);
                        lineav.SubItems.Add(item.PATERNO);
                        lineav.SubItems.Add(item.MATERNO);

                        lvsocios.Items.Add(lineav);
                    }
                    a = -1;
                    limpirtb();
                }
            }
            else
                MessageBox.Show("Para Modificar datos primero debe: Buscar y seleccinar un socio de la lista");
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (faltadatos() == 0 && tbcelec.Text != "")
            {
                if (ControladorSocio.ExistePersonabyId(tbcelec.Text) != "-1")
                {
                    MessageBox.Show("Credencial de elector ya registrada");
                }
                else
                {
                    DialogResult Result;
                    Result = MessageBox.Show("SE INSERTARÁ UN NUEVO SOCIO, ¿DESEA CONTINUAR?", "USUARIO", MessageBoxButtons.OKCancel);
                    if (Result == DialogResult.OK)
                    {
                        catnom Newsocio = new catnom();
                        Newsocio.CVEELEC = tbcelec.Text;
                        Newsocio.NOMBRE = tbnom.Text;
                        Newsocio.PATERNO = tbpat.Text;
                        Newsocio.MATERNO = tbmat.Text;
                        Newsocio.DIRECCION = tbdir.Text;
                        Newsocio.TELEFONO = tbtel.Text;
                        string idso = ControladorSocio.CrearSocio(Newsocio);
                        if (idso != "")
                        {
                            MessageBox.Show("Socio Creado", "SOCIOS");
                            tbBpaterno.Text = Newsocio.PATERNO;
                            listsocio = ControladorSocio.AllSociosByApPa(tbBpaterno.Text);
                            lvsocios.Clear();
                            lvsocios.Columns.Add("CLAVE ELECTOR", 170);
                            lvsocios.Columns.Add("NOMBRE", 170);
                            lvsocios.Columns.Add("APELLIDO PATERNO", 170);
                            lvsocios.Columns.Add("APELLIDO MATERNO", 170);
                            foreach (var item in listsocio)
                            {
                                ListViewItem lineav = new ListViewItem(item.CVEELEC);
                                lineav.SubItems.Add(item.NOMBRE);
                                lineav.SubItems.Add(item.PATERNO);
                                lineav.SubItems.Add(item.MATERNO);

                                lvsocios.Items.Add(lineav);
                            }
                            a = -1;
                            limpirtb();


                        }
                    }
                }
            }
        }

        private void button4_Click(object sender, EventArgs e)
        {
            if (a == -1)
            {
                MessageBox.Show("Ningun socio ha sido seleccionado");
            }
            else
	        {
                if (listsocio[a].CVEELEC != tbcelec.Text)
                {
                    MessageBox.Show("No se permite modificar la clave de elector del socio seleccionado");
                    tbcelec.Text = listsocio[a].CVEELEC;
                }
                else 
                {
                    DialogResult Result;
                    Result = MessageBox.Show("SE ELIMINARÁ EL SOCIO: "+listsocio[a].NOMBRE+" "+listsocio[a].PATERNO+" "+listsocio[a].MATERNO+", ¿DESEA CONTINUAR?", "SOCIO", MessageBoxButtons.OKCancel);
                    if (Result == DialogResult.OK)
                    {
                        string idus = ControladorSocio.EliminarSocioById(listsocio[a].CVEELEC);
                        if (idus != "")
                        {
                            MessageBox.Show("Socio Eliminado", "SOCIO");
                            lvsocios.Clear();
                            lvsocios.Columns.Add("CLAVE ELECTOR", 170);
                            lvsocios.Columns.Add("NOMBRE", 170);
                            lvsocios.Columns.Add("APELLIDO PATERNO", 170);
                            lvsocios.Columns.Add("APELLIDO MATERNO", 170);
                            a = -1;
                            limpirtb();
                        }
                    }
                           
                }
	        }
        }

        private void tbBpaterno_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == Convert.ToChar(13))
            {
                button2_Click(sender, e);
            }
        }

        private void tbcelec_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == Convert.ToChar(13))
            {
                tbnom.Focus();
            }
        }

        private void tbnom_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == Convert.ToChar(13))
            {
                tbpat.Focus();
            }
        }

        private void tbpat_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == Convert.ToChar(13))
            {
                tbmat.Focus();
            }
        }

        private void tbmat_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == Convert.ToChar(13))
            {
                tbdir.Focus();
            }
        }

        private void tbdir_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == Convert.ToChar(13))
            {
                tbtel.Focus();
            }
        }

        private void tbtel_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == Convert.ToChar(13))
            {
                button1.Focus();
            }
        }

        private void tbcelec_KeyPress_1(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == Convert.ToChar(13))
            {
                tbnom.Focus();
            }
        }
    }
}
